{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "33f793bb-111f-4970-9492-7257482d5979",
   "metadata": {},
   "source": [
    "# pandas"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "45cd21d3-99e5-4d9f-a738-dbe299516b80",
   "metadata": {},
   "source": [
    "+ 天文数据处理：\n",
    "    - R语言\n",
    "    - Python"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b9b5dad7-5050-4ae0-b02c-ec1c73a2fee1",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "f49369ce-f31d-4ea0-8c02-e1fdde114f8a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     60\n",
       "1     70\n",
       "2     65\n",
       "3    100\n",
       "4    230\n",
       "5    150\n",
       "6    100\n",
       "7    300\n",
       "8    250\n",
       "9    150\n",
       "dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 时间4点，5点，... 22点\n",
    "times = pd.Series([6, 7, 8, 11, 12, 13, 18, 19, 20, 21])\n",
    "# 顾客人数\n",
    "customers = pd.Series([60, 70, 65, 100, 230, 150, 100, 300, 250, 150])\n",
    "customers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "0e2d2bf7-aaa7-4ec7-8652-4a98999b5990",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f43b3f36500>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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iIjlKEERERERy1GCIiIiIpajBEVEREQsx+cJyqOPPorD4Wh06d27t/fxqqoqcnNzad++PfHx8YwfP57i4mJfhyEiIiJBzC8rKH379uXAgQPey6pVq7yPTZ06lQULFvDGG2+wYsUK9u/fz7hx4/wRhoiIiAQpv7QZR0REkJaW9q37y8rKePHFF5k/fz6XX345AC+99BJ9+vRhzZo1DB061B/hiIiISJDxywrK9u3bycjI4Nxzz2XChAkUFhYCkJ+fT21tLaNGjfI+t3fv3mRmZpKXl3fK16uursbpdDa6iIiIiH35PEHJzs5m3rx5LFq0iDlz5rBr1y4uuugiysvLKSoqIioqirZt2zb6mtTUVIqKik75mjNnziQpKcl76dKli6/DFhEREQvx+Smeq666yns8YMAAsrOz6dq1K//85z+JjY1t0WvOmDGDadOmeW87nU4lKSIiIjbm91H3bdu2pWfPnuzYsYMrrriCmpoaSktLG62iFBcXN1mz4hEdHU109Im9cdxuN4BO9YiIiAQRz+9tz+/x0/F7glJRUcHOnTuZOHEigwcPJjIykiVLljB+/HgAtm3bRmFhITk5OWf9muXl5QBaRREREQlC5eXlJCUlnfY5DvfZpDHN8LOf/YzrrruOrl27sn//fh555BE2btzI559/TseOHbnnnnt49913mTdvHomJidx7770ArF69+qzfw+VysX//fhISEnA4HL4M33v6aM+ePSQmJvr0ta1In9fe9HntTZ/X3uz4ed1uN+Xl5WRkZBAWdvoyWJ+voOzdu5cf/OAHHDp0iI4dOzJixAjWrFlDx44dAXj66acJCwtj/PjxVFdXM2bMGJ5//vlmvUdYWBidO3f2deiNJCYm2uZ/iLOhz2tv+rz2ps9rb3b7vGdaOfHweYLy+uuvn/bxmJgYZs+ezezZs3391iIiImIT2otHRERELEcJykmio6N55JFHGnUN2Zk+r73p89qbPq+9hdrnPZnPi2RFREREWksrKCIiImI5SlBERETEcpSgiIiIiOUoQRERERHLUYJy3L59+7jlllto3749sbGx9O/fn08++cTssPyivr6ehx56iG7duhEbG0v37t154oknzmpvhGCxcuVKrrvuOjIyMnA4HLz99tuNHne73Tz88MOkp6cTGxvLqFGj2L59uznB+sDpPm9tbS0PPPAA/fv3p02bNmRkZHDrrbeyf/9+8wJupTP9+zZ0991343A4eOaZZwIWn6+dzefdunUr3/3ud0lKSqJNmzYMGTKEwsLCwAfrA2f6vBUVFUyePJnOnTsTGxtLVlYWc+fONSdYH5g5cyZDhgwhISGBlJQUxo4dy7Zt2xo9p6qqitzcXNq3b098fDzjx4+nuLjYpIgDQwkKcOTIEYYPH05kZCTvvfcen3/+OX/84x9p166d2aH5xZNPPsmcOXP485//zNatW3nyySd56qmnmDVrltmh+UxlZSUDBw485UDAp556iueee465c+eydu1a2rRpw5gxY6iqqgpwpL5xus979OhRNmzYwEMPPcSGDRt488032bZtG9/97ndNiNQ3zvTv6/HWW2+xZs0aMjIyAhSZf5zp8+7cuZMRI0bQu3dvli9fzqZNm3jooYeIiYkJcKS+cabPO23aNBYtWsQrr7zC1q1bmTJlCpMnT+add94JcKS+sWLFCnJzc1mzZg2LFy+mtraW0aNHU1lZ6X3O1KlTWbBgAW+88QYrVqxg//79jBs3zsSoA8At7gceeMA9YsQIs8MImGuuucZ9++23N7pv3Lhx7gkTJpgUkX8B7rfeest72+VyudPS0ty///3vvfeVlpa6o6Oj3a+99poJEfrWyZ+3KevWrXMD7t27dwcmKD861efdu3evu1OnTu6CggJ3165d3U8//XTAY/OHpj7vTTfd5L7lllvMCcjPmvq8ffv2dT/++OON7rvgggvcv/rVrwIYmf+UlJS4AfeKFSvcbrfx8ykyMtL9xhtveJ+zdetWN+DOy8szK0y/0woK8M4773DhhRfy/e9/n5SUFM4//3z++te/mh2W3wwbNowlS5bw5ZdfAvDZZ5+xatUqrrrqKpMjC4xdu3ZRVFTEqFGjvPclJSWRnZ1NXl6eiZEFTllZGQ6Hg7Zt25odil+4XC4mTpzI9OnT6du3r9nh+JXL5eK///0vPXv2ZMyYMaSkpJCdnX3a017BbtiwYbzzzjvs27cPt9vNsmXL+PLLLxk9erTZoflEWVkZAMnJyQDk5+dTW1vb6GdW7969yczMtPXPLCUowFdffcWcOXPo0aMH77//Pvfccw/33XcfL7/8stmh+cUvfvELbr75Znr37k1kZCTnn38+U6ZMYcKECWaHFhBFRUUApKamNro/NTXV+5idVVVV8cADD/CDH/zAVhuQNfTkk08SERHBfffdZ3YofldSUkJFRQW/+93vuPLKK/nggw+4/vrrGTduHCtWrDA7PL+YNWsWWVlZdO7cmaioKK688kpmz57NxRdfbHZoreZyuZgyZQrDhw+nX79+gPEzKyoq6lt/UNj9Z5bPNwsMRi6XiwsvvJDf/va3AJx//vkUFBQwd+5cJk2aZHJ0vvfPf/6TV199lfnz59O3b182btzIlClTyMjIsOXnlRNqa2u58cYbcbvdzJkzx+xw/CI/P59nn32WDRs24HA4zA7H71wuFwDf+973mDp1KgCDBg1i9erVzJ07l0suucTM8Pxi1qxZrFmzhnfeeYeuXbuycuVKcnNzycjIaLTKEIxyc3MpKChg1apVZodiOq2gAOnp6WRlZTW6r0+fPkFbAX8m06dP966i9O/fn4kTJzJ16lRmzpxpdmgBkZaWBvCtCvji4mLvY3bkSU52797N4sWLbbt68tFHH1FSUkJmZiYRERFERESwe/dufvrTn3LOOeeYHZ7PdejQgYiIiJD5GXbs2DF++ctf8qc//YnrrruOAQMGMHnyZG666Sb+8Ic/mB1eq0yePJmFCxeybNkyOnfu7L0/LS2NmpoaSktLGz3f7j+zlKAAw4cP/1ZL15dffknXrl1Nisi/jh49SlhY43/68PBw719idtetWzfS0tJYsmSJ9z6n08natWvJyckxMTL/8SQn27dv58MPP6R9+/Zmh+Q3EydOZNOmTWzcuNF7ycjIYPr06bz//vtmh+dzUVFRDBkyJGR+htXW1lJbW2urn2Fut5vJkyfz1ltvsXTpUrp169bo8cGDBxMZGdnoZ9a2bdsoLCy07c8s0CkewGjfGjZsGL/97W+58cYbWbduHS+88AIvvPCC2aH5xXXXXcdvfvMbMjMz6du3L59++il/+tOfuP32280OzWcqKirYsWOH9/auXbvYuHEjycnJZGZmMmXKFH7961/To0cPunXrxkMPPURGRgZjx441L+hWON3nTU9P54YbbmDDhg0sXLiQ+vp673nr5ORkoqKizAq7xc7073tyAhYZGUlaWhq9evUKdKg+cabPO336dG666SYuvvhiLrvsMhYtWsSCBQtYvny5eUG3wpk+7yWXXML06dOJjY2la9eurFixgr///e/86U9/MjHqlsvNzWX+/Pn85z//ISEhwfv9mZSURGxsLElJSdxxxx1MmzaN5ORkEhMTuffee8nJyWHo0KEmR+9HJncRWcaCBQvc/fr1c0dHR7t79+7tfuGFF8wOyW+cTqf7/vvvd2dmZrpjYmLc5557rvtXv/qVu7q62uzQfGbZsmVu4FuXSZMmud1uo9X4oYcecqemprqjo6PdI0eOdG/bts3coFvhdJ93165dTT4GuJctW2Z26C1ypn/fkwV7m/HZfN4XX3zRfd5557ljYmLcAwcOdL/99tvmBdxKZ/q8Bw4ccN92223ujIwMd0xMjLtXr17uP/7xj26Xy2Vu4C10qu/Pl156yfucY8eOuX/yk5+427Vr546Li3Nff/317gMHDpgXdAA43G4bjQ8VERERW1ANioiIiFiOEhQRERGxHCUoIiIiYjlKUERERMRylKCIiIiI5ShBEREREctRgiIiIiKWowRFRERELEcJioiIiFiOEhQRERGxHCUoIiIiYjlKUERERMRy/h9aZkDzs9cwuQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(times, customers, '+')\n",
    "plt.plot(times, customers)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9259cfd7-0dfd-4588-936a-4fbcb84156f2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 60,  70,  65, 100, 230, 150, 100, 300, 250, 150])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "customers.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "757ba37b-ff09-4a1f-a8da-5a6a83310cd7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['6h', '7h', '8h', '11h', '12h', '13h', '18h', '19h', '20h', '21h'], dtype='object')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "customers.index #index 索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "af7b4b59-f9c4-4d8d-96cd-e0d207516195",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6h      60\n",
       "7h      70\n",
       "8h      65\n",
       "11h    100\n",
       "12h    230\n",
       "13h    150\n",
       "18h    100\n",
       "19h    300\n",
       "20h    250\n",
       "21h    150\n",
       "dtype: int64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "times = ['6h', '7h', '8h', '11h', '12h', '13h', '18h', '19h', '20h', '21h']\n",
    "customers = pd.Series([60, 70, 65, 100, 230, 150, 100, 300, 250, 150], index=times)\n",
    "customers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "0bfaeb10-5ca3-49a4-81ae-77bf316bbe1b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.int64(60)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "customers['6h']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "fdda7222-24ad-4489-96f6-06085aeea848",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 时段4点，5点，... 22点\n",
    "times = np.array([6, 7, 8, 11, 12, 13, 18, 19, 20, 21])\n",
    "# 顾客人数\n",
    "customers = np.array([60, 70, 65, 100, 230, 150, 100, 300, 250, 150])\n",
    "# 平均消费\n",
    "costs = np.array([6, 7, 8, 24, 23, 26, 45, 55, 45, 40])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "b3e54cec-3afb-488e-82fa-546a8e9cebed",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>customers</th>\n",
       "      <th>costs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>60</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>70</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>65</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>100</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>230</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>150</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>100</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>300</td>\n",
       "      <td>55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>250</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>150</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    customers  costs\n",
       "6          60      6\n",
       "7          70      7\n",
       "8          65      8\n",
       "11        100     24\n",
       "12        230     23\n",
       "13        150     26\n",
       "18        100     45\n",
       "19        300     55\n",
       "20        250     45\n",
       "21        150     40"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = {'customers':customers, 'costs':costs}\n",
    "df = pd.DataFrame(data, index=times)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "a76db226-0f37-4d54-9c1e-9ff13f26dc7e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.int64(60)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['customers'][6]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "34d89d56-b4ac-436c-99ef-ef2a35056e91",
   "metadata": {},
   "source": [
    "## 生成一个实验数据\n",
    "\n",
    "一个班有40个人，每个人考4门课，语文（90， rms=20) ，数学(120, rms =30)，外语( 50, rms = 20)，政治 (80 rms = 15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "591f7ac7-bf6f-4a41-9cf6-1f0369f9cd8e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>语文</th>\n",
       "      <th>英语</th>\n",
       "      <th>数学</th>\n",
       "      <th>政治</th>\n",
       "      <th>总分</th>\n",
       "      <th>排名</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>刘汝</th>\n",
       "      <td>51</td>\n",
       "      <td>61</td>\n",
       "      <td>77</td>\n",
       "      <td>97</td>\n",
       "      <td>286</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>钟晴</th>\n",
       "      <td>76</td>\n",
       "      <td>36</td>\n",
       "      <td>150</td>\n",
       "      <td>97</td>\n",
       "      <td>359</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>黄明</th>\n",
       "      <td>92</td>\n",
       "      <td>64</td>\n",
       "      <td>135</td>\n",
       "      <td>46</td>\n",
       "      <td>337</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>梁雨</th>\n",
       "      <td>115</td>\n",
       "      <td>53</td>\n",
       "      <td>77</td>\n",
       "      <td>87</td>\n",
       "      <td>332</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>黄明</th>\n",
       "      <td>94</td>\n",
       "      <td>51</td>\n",
       "      <td>150</td>\n",
       "      <td>89</td>\n",
       "      <td>384</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>黄明</th>\n",
       "      <td>78</td>\n",
       "      <td>65</td>\n",
       "      <td>112</td>\n",
       "      <td>77</td>\n",
       "      <td>332</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>郑汝</th>\n",
       "      <td>90</td>\n",
       "      <td>55</td>\n",
       "      <td>140</td>\n",
       "      <td>100</td>\n",
       "      <td>385</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>黄晴</th>\n",
       "      <td>90</td>\n",
       "      <td>59</td>\n",
       "      <td>150</td>\n",
       "      <td>53</td>\n",
       "      <td>352</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>蓝汝</th>\n",
       "      <td>96</td>\n",
       "      <td>81</td>\n",
       "      <td>110</td>\n",
       "      <td>94</td>\n",
       "      <td>381</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>刘明</th>\n",
       "      <td>97</td>\n",
       "      <td>29</td>\n",
       "      <td>87</td>\n",
       "      <td>64</td>\n",
       "      <td>277</td>\n",
       "      <td>38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>梁汝</th>\n",
       "      <td>106</td>\n",
       "      <td>54</td>\n",
       "      <td>87</td>\n",
       "      <td>90</td>\n",
       "      <td>337</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>刘晴</th>\n",
       "      <td>68</td>\n",
       "      <td>30</td>\n",
       "      <td>69</td>\n",
       "      <td>58</td>\n",
       "      <td>225</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>梁雨</th>\n",
       "      <td>65</td>\n",
       "      <td>54</td>\n",
       "      <td>109</td>\n",
       "      <td>93</td>\n",
       "      <td>321</td>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>王雨</th>\n",
       "      <td>67</td>\n",
       "      <td>82</td>\n",
       "      <td>91</td>\n",
       "      <td>100</td>\n",
       "      <td>340</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>陈明</th>\n",
       "      <td>96</td>\n",
       "      <td>37</td>\n",
       "      <td>118</td>\n",
       "      <td>96</td>\n",
       "      <td>347</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>郑雨</th>\n",
       "      <td>104</td>\n",
       "      <td>58</td>\n",
       "      <td>150</td>\n",
       "      <td>100</td>\n",
       "      <td>412</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>陈雨</th>\n",
       "      <td>82</td>\n",
       "      <td>46</td>\n",
       "      <td>106</td>\n",
       "      <td>79</td>\n",
       "      <td>313</td>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>郑晴</th>\n",
       "      <td>121</td>\n",
       "      <td>58</td>\n",
       "      <td>96</td>\n",
       "      <td>86</td>\n",
       "      <td>361</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>王雨</th>\n",
       "      <td>118</td>\n",
       "      <td>59</td>\n",
       "      <td>72</td>\n",
       "      <td>84</td>\n",
       "      <td>333</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>黄明</th>\n",
       "      <td>66</td>\n",
       "      <td>66</td>\n",
       "      <td>133</td>\n",
       "      <td>59</td>\n",
       "      <td>324</td>\n",
       "      <td>29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>刘明</th>\n",
       "      <td>102</td>\n",
       "      <td>60</td>\n",
       "      <td>150</td>\n",
       "      <td>95</td>\n",
       "      <td>407</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>梁汝</th>\n",
       "      <td>68</td>\n",
       "      <td>64</td>\n",
       "      <td>57</td>\n",
       "      <td>96</td>\n",
       "      <td>285</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>钟雨</th>\n",
       "      <td>72</td>\n",
       "      <td>38</td>\n",
       "      <td>119</td>\n",
       "      <td>100</td>\n",
       "      <td>329</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>陈晴</th>\n",
       "      <td>99</td>\n",
       "      <td>42</td>\n",
       "      <td>119</td>\n",
       "      <td>65</td>\n",
       "      <td>325</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>黄明</th>\n",
       "      <td>106</td>\n",
       "      <td>88</td>\n",
       "      <td>75</td>\n",
       "      <td>81</td>\n",
       "      <td>350</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>黄雨</th>\n",
       "      <td>112</td>\n",
       "      <td>22</td>\n",
       "      <td>135</td>\n",
       "      <td>70</td>\n",
       "      <td>339</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>钟明</th>\n",
       "      <td>47</td>\n",
       "      <td>26</td>\n",
       "      <td>63</td>\n",
       "      <td>100</td>\n",
       "      <td>236</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>王晴</th>\n",
       "      <td>81</td>\n",
       "      <td>61</td>\n",
       "      <td>144</td>\n",
       "      <td>85</td>\n",
       "      <td>371</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>刘明</th>\n",
       "      <td>118</td>\n",
       "      <td>13</td>\n",
       "      <td>150</td>\n",
       "      <td>100</td>\n",
       "      <td>381</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>陈晴</th>\n",
       "      <td>92</td>\n",
       "      <td>74</td>\n",
       "      <td>132</td>\n",
       "      <td>96</td>\n",
       "      <td>394</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>郑明</th>\n",
       "      <td>76</td>\n",
       "      <td>47</td>\n",
       "      <td>150</td>\n",
       "      <td>64</td>\n",
       "      <td>337</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>蓝雨</th>\n",
       "      <td>128</td>\n",
       "      <td>80</td>\n",
       "      <td>93</td>\n",
       "      <td>100</td>\n",
       "      <td>401</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>郑雨</th>\n",
       "      <td>102</td>\n",
       "      <td>77</td>\n",
       "      <td>74</td>\n",
       "      <td>60</td>\n",
       "      <td>313</td>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>梁雨</th>\n",
       "      <td>95</td>\n",
       "      <td>29</td>\n",
       "      <td>90</td>\n",
       "      <td>64</td>\n",
       "      <td>278</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>钟明</th>\n",
       "      <td>118</td>\n",
       "      <td>67</td>\n",
       "      <td>150</td>\n",
       "      <td>82</td>\n",
       "      <td>417</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>黄汝</th>\n",
       "      <td>67</td>\n",
       "      <td>60</td>\n",
       "      <td>116</td>\n",
       "      <td>81</td>\n",
       "      <td>324</td>\n",
       "      <td>29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>郑明</th>\n",
       "      <td>106</td>\n",
       "      <td>71</td>\n",
       "      <td>150</td>\n",
       "      <td>82</td>\n",
       "      <td>409</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>郑晴</th>\n",
       "      <td>81</td>\n",
       "      <td>93</td>\n",
       "      <td>125</td>\n",
       "      <td>73</td>\n",
       "      <td>372</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>蓝汝</th>\n",
       "      <td>110</td>\n",
       "      <td>29</td>\n",
       "      <td>131</td>\n",
       "      <td>69</td>\n",
       "      <td>339</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>黄汝</th>\n",
       "      <td>79</td>\n",
       "      <td>58</td>\n",
       "      <td>93</td>\n",
       "      <td>88</td>\n",
       "      <td>318</td>\n",
       "      <td>32</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     语文  英语   数学   政治   总分  排名\n",
       "刘汝   51  61   77   97  286  35\n",
       "钟晴   76  36  150   97  359  14\n",
       "黄明   92  64  135   46  337  21\n",
       "梁雨  115  53   77   87  332  25\n",
       "黄明   94  51  150   89  384   8\n",
       "黄明   78  65  112   77  332  25\n",
       "郑汝   90  55  140  100  385   7\n",
       "黄晴   90  59  150   53  352  15\n",
       "蓝汝   96  81  110   94  381   9\n",
       "刘明   97  29   87   64  277  38\n",
       "梁汝  106  54   87   90  337  21\n",
       "刘晴   68  30   69   58  225  40\n",
       "梁雨   65  54  109   93  321  31\n",
       "王雨   67  82   91  100  340  18\n",
       "陈明   96  37  118   96  347  17\n",
       "郑雨  104  58  150  100  412   2\n",
       "陈雨   82  46  106   79  313  33\n",
       "郑晴  121  58   96   86  361  13\n",
       "王雨  118  59   72   84  333  24\n",
       "黄明   66  66  133   59  324  29\n",
       "刘明  102  60  150   95  407   4\n",
       "梁汝   68  64   57   96  285  36\n",
       "钟雨   72  38  119  100  329  27\n",
       "陈晴   99  42  119   65  325  28\n",
       "黄明  106  88   75   81  350  16\n",
       "黄雨  112  22  135   70  339  19\n",
       "钟明   47  26   63  100  236  39\n",
       "王晴   81  61  144   85  371  12\n",
       "刘明  118  13  150  100  381   9\n",
       "陈晴   92  74  132   96  394   6\n",
       "郑明   76  47  150   64  337  21\n",
       "蓝雨  128  80   93  100  401   5\n",
       "郑雨  102  77   74   60  313  33\n",
       "梁雨   95  29   90   64  278  37\n",
       "钟明  118  67  150   82  417   1\n",
       "黄汝   67  60  116   81  324  29\n",
       "郑明  106  71  150   82  409   3\n",
       "郑晴   81  93  125   73  372  11\n",
       "蓝汝  110  29  131   69  339  19\n",
       "黄汝   79  58   93   88  318  32"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import random\n",
    "\n",
    "name1 = ['刘','张','王','陈','梁','蓝','黄','钟','郑']\n",
    "name2 = ['汝','晴','雨','明']\n",
    "names = []\n",
    "# random_number = random.randint(1, len(name))\n",
    "# list1 = []\n",
    "for i in range(40):\n",
    "    random_number = random.randint(0, len(name1)-1)\n",
    "    random_number2 = random.randint(0, len(name2)-1)\n",
    "    names.append(name1[random_number]+name2[random_number2])\n",
    "# (均值，方差，size)\n",
    "chinese = np.clip(np.random.normal(90, 20, 40),0,150)\n",
    "math = np.clip(np.random.normal(120, 30, 40),0,150)\n",
    "english = np.clip(np.random.normal(50, 20, 40),0,150)\n",
    "z = np.clip(np.random.normal(80, 15, 40),0,100)\n",
    "data = {'语文':chinese.astype(int), '英语':english.astype(int),'数学':math.astype(int),\"政治\":z.astype(int)}\n",
    "df = pd.DataFrame(data,index = names)\n",
    "df['总分'] = df.sum(axis=1)\n",
    "df['排名'] = df['总分'].rank(method='min',ascending=False).astype(int)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "a5e1e3be-6d63-4a03-84f7-5553ebb4e6ce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>最高分</th>\n",
       "      <th>最高分姓名</th>\n",
       "      <th>最低分</th>\n",
       "      <th>最低分姓名</th>\n",
       "      <th>平均分</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>语文</th>\n",
       "      <td>128</td>\n",
       "      <td>蓝雨</td>\n",
       "      <td>47</td>\n",
       "      <td>钟明</td>\n",
       "      <td>90.775</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>英语</th>\n",
       "      <td>93</td>\n",
       "      <td>郑晴</td>\n",
       "      <td>13</td>\n",
       "      <td>刘明</td>\n",
       "      <td>54.925</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>数学</th>\n",
       "      <td>150</td>\n",
       "      <td>钟晴</td>\n",
       "      <td>57</td>\n",
       "      <td>梁汝</td>\n",
       "      <td>113.375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>政治</th>\n",
       "      <td>100</td>\n",
       "      <td>郑汝</td>\n",
       "      <td>46</td>\n",
       "      <td>黄明</td>\n",
       "      <td>82.500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>总分</th>\n",
       "      <td>417</td>\n",
       "      <td>钟明</td>\n",
       "      <td>225</td>\n",
       "      <td>刘晴</td>\n",
       "      <td>341.575</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    最高分 最高分姓名  最低分 最低分姓名      平均分\n",
       "语文  128    蓝雨   47    钟明   90.775\n",
       "英语   93    郑晴   13    刘明   54.925\n",
       "数学  150    钟晴   57    梁汝  113.375\n",
       "政治  100    郑汝   46    黄明   82.500\n",
       "总分  417    钟明  225    刘晴  341.575"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2 = {'最高分':df[['语文', '英语','数学','政治','总分']].max(),\n",
    "         '最高分姓名':df[['语文', '英语', '数学', '政治','总分']].idxmax(),\n",
    "         '最低分':df[['语文', '英语','数学','政治','总分']].min(),\n",
    "         '最低分姓名':df[['语文', '英语', '数学', '政治','总分']].idxmin(),\n",
    "         '平均分':df[['语文', '英语','数学','政治','总分']].mean()}\n",
    "df2 = pd.DataFrame(data2,index = ['语文', '英语','数学','政治','总分'])\n",
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c3435125-ee1d-468e-bce9-6e9695230657",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6e8d04c9-7d19-4156-9b57-74338a3cc0ae",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8f692bc5-e65a-4cba-aa3a-21edbfbc33bb",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "d4948374-0ffa-4c69-a125-2dd592cf801c",
   "metadata": {},
   "outputs": [],
   "source": [
    "#df.to_excel('666.xlsx')\n",
    "#导出"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "2d70feb7-ecda-40f9-b4df-1c57d67eddc5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>C</th>\n",
       "      <th>E</th>\n",
       "      <th>F</th>\n",
       "      <th>G</th>\n",
       "      <th>H</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>14</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>16</td>\n",
       "      <td>18</td>\n",
       "      <td>20</td>\n",
       "      <td>21</td>\n",
       "      <td>22</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    A   C   E   F   G   H\n",
       "0   0   2   4   5   6   7\n",
       "1   8  10  12  13  14  15\n",
       "2  16  18  20  21  22  23"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.arange(24).reshape(3,8),\n",
    "                  columns=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])\n",
    "\n",
    "df.drop(['B', 'D'], axis=1) # 删除，axis=1列\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "dde1ca28-6724-4987-8d1f-837778f2c3e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "      <th>F</th>\n",
       "      <th>G</th>\n",
       "      <th>H</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>14</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>16</td>\n",
       "      <td>17</td>\n",
       "      <td>18</td>\n",
       "      <td>19</td>\n",
       "      <td>20</td>\n",
       "      <td>21</td>\n",
       "      <td>22</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    A   B   C   D   E   F   G   H\n",
       "0   0   1   2   3   4   5   6   7\n",
       "1   8   9  10  11  12  13  14  15\n",
       "2  16  17  18  19  20  21  22  23"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "1b3ed3a9-b412-4e0f-9b49-90122dd4ca49",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>C</th>\n",
       "      <th>E</th>\n",
       "      <th>G</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>12</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>16</td>\n",
       "      <td>18</td>\n",
       "      <td>20</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    A   C   E   G\n",
       "0   0   2   4   6\n",
       "1   8  10  12  14\n",
       "2  16  18  20  22"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "to_drop = ['B', 'D', 'F', 'H']\n",
    "df.drop(to_drop, axis=1, inplace=True)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e5941354-778b-4f36-80b7-bf9fe94b79b8",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
